3 research outputs found
Bounded Synthesis of Reactive Programs
Most algorithms for the synthesis of reactive systems focus on the
construction of finite-state machines rather than actual programs. This often
leads to badly structured, unreadable code. In this paper, we present a bounded
synthesis approach that automatically constructs, from a given specification in
linear-time temporal logic (LTL), a program in Madhusudan's simple imperative
language for reactive programs. We develop and compare two principal approaches
for the reduction of the synthesis problem to a Boolean constraint satisfaction
problem. The first reduction is based on a generalization of bounded synthesis
to two-way alternating automata, the second reduction is based on a direct
encoding of the program syntax in the constraint system. We report on
preliminary experience with a prototype implementation, which indicates that
the direct encoding outperforms the automata approach
Temporal Stream Logic: Synthesis beyond the Bools
Reactive systems that operate in environments with complex data, such as
mobile apps or embedded controllers with many sensors, are difficult to
synthesize. Synthesis tools usually fail for such systems because the state
space resulting from the discretization of the data is too large. We introduce
TSL, a new temporal logic that separates control and data. We provide a
CEGAR-based synthesis approach for the construction of implementations that are
guaranteed to satisfy a TSL specification for all possible instantiations of
the data processing functions. TSL provides an attractive trade-off for
synthesis. On the one hand, synthesis from TSL, unlike synthesis from standard
temporal logics, is undecidable in general. On the other hand, however,
synthesis from TSL is scalable, because it is independent of the complexity of
the handled data. Among other benchmarks, we have successfully synthesized a
music player Android app and a controller for an autonomous vehicle in the Open
Race Car Simulator (TORCS.